<?php

/**
 * calendario actions.
 *
 * @package    openbonsai
 * @subpackage calendario
 * @author     Pablo Braulio
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class calendarioActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
      if($request->getParameter('mes')){
          $mes= $request->getParameter('mes');
      } else{
          $mes= date('n');
      }

      if($request->getParameter('ano')){
          $ano= $request->getParameter('ano');
      } else {
          $ano= date('Y');
      }
/*Función para abreviar el mes y mostrarlo el primer día del siguiente mes y el último día del mes
 * anterior.
 */
function mesAbreviado($mes){
      switch ($mes){
          case 1:
              $abrev= 'ene';
              break;
          case 2:
              $abrev= 'feb';
              break;
          case 3:
              $abrev= 'mar';
              break;
          case 4:
              $abrev= 'abr';
              break;
          case 5:
              $abrev= 'may';
              break;
          case 6:
              $abrev= 'jun';
              break;
          case 7:
              $abrev= 'jul';
              break;
          case 8:
              $abrev= 'ago';
              break;
          case 9:
              $abrev= 'sep';
              break;
          case 10:
              $abrev= 'oct';
              break;
          case 11:
              $abrev= 'nov';
              break;
          case 12:
              $abrev= 'dic';
              break;
      }
      return $abrev;
  }

    //Recoger el mes y año actual.
    $nombreMes= new calendario();
    $this->mesActual= $nombreMes->dame_nombre_mes($mes);
    $this->anoActual= $ano;

    //Número del mes.
    $this->numeroMes= $mes;

    //Número de la semana del primer día del mes.
    $dia= new calendario();
    $this->numeroDia= $dia->calcula_numero_dia_semana(1, $mes, $ano);

    //Sacar el último día del mes. 30, 31, 28 o 29.
    $ultimoDia= new calendario();
    $this->ultimoDia= $ultimoDia->ultimoDia($mes, $ano);

    //mes anterior.
    $this->mesAnterior= $mes-1;

    //Año anterior.
    $this->anoAnterior= $ano;

    //Sacar diciembre del año anterior.
    if($this->mesAnterior==0){
        $this->anoAnterior--;
        $this->mesAnterior=12;
    }

    //Sacar el último día del mes anterior.
    $ultimoDiaMesAnt= new calendario();
    $this->ultimoDiaMestAnt= $ultimoDiaMesAnt->ultimoDia($this->mesAnterior, $this->anoAnterior);

    //Mes siguiente.
    $this->mesSiguiente= $mes+1;

    //Año siguiente.
    $this->anoSiguiente= $ano;

    //Sacar enero del año siguiente.
    if($this->mesSiguiente==13){
        $this->mesSiguiente=1;
        $this->anoSiguiente++;
    }

    $this->abrevMesSig= mesAbreviado($this->mesSiguiente);
    $this->abrevMesAnt= mesAbreviado($this->mesAnterior);
  }

  public function executeCalendarDia(sfWebRequest $request){
      //Crear array con la variable día para extracción.
      $fecha= explode('-', $this->getRequestParameter('dia'));

      //Dia de la semana.
      $diaSem= new calendario();
      $diaSem= $diaSem->calcula_numero_dia_semana($fecha[0], $fecha[1], $fecha[2]);

      switch ($diaSem){
          case 0:
              $this->diaSem= 'lunes';
              break;
          case 1:
              $this->diaSem= 'martes';
              break;
          case 2:
              $this->diaSem= 'miércoles';
              break;
          case 3:
              $this->diaSem= 'jueves';
              break;
          case 4:
              $this->diaSem= 'viernes';
              break;
          case 5:
              $this->diaSem= 'sábado';
              break;
          case 6:
              $this->diaSem= 'domingo';
              break;
      }

      //Número del día.
      $this->dia= $fecha[0];

      //Nombre del mes.
      $mes= new calendario();
      $this->mes= $mes->dame_nombre_mes($fecha[1]);

      //Año.
      $this->ano= $fecha[2];

  }


}
